﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;

namespace AlgorithmTest
{
    // T_[四个数字排序]_[算法名]
    public class T_0100_RangeBitwiseAnd : IAlgorithm
    {
        // 201. 数字范围按位与

        // 给你两个整数 left 和 right ，表示区间 [left, right] ，返回此区间内所有数字 按位与 的结果（包含 left 、right 端点）。

        // 提示：
        //  0 <= left <= right <= 2^31 - 1

        public void Test()
        {
            // 算法参数定义

            // 算法执行与打印
            Console.WriteLine(RangeBitwiseAnd(0, 1));
        }
        // 算法
        public int RangeBitwiseAnd(int left, int right)
        {
            int shift = 0;
            while (left < right)
            {
                left >>= 1;
                right >>= 1;
                ++shift;
            }
            return left << shift;
        }
    }
}
